/* 页面切换动画 */
.page-enter-active,
.page-leave-active {
  transition: opacity 1s;
}
.page-enter,
.page-leave-active {
  opacity: 0;
}
.fade-enter-active,
.fade-leave-active {
  transition: opacity 0.2s;
}
.fade-enter,
.fade-leave-to {
  opacity: 0;
}
/* 背景渐变色 */
.bg-gradient {
  background-image: linear-gradient(120deg, #ee7752, #e73c7e, #23a6d5, #23d5ab, #ee7752, #e73c7e);
  background-size: 600% 100%;
  -webkit-transition: width 0.3s linear;
  transition: width 0.3s linear;
  padding: 4px;
  animation: animationGradient 10s ease infinite;
}
@keyframes animationGradient {
  0%,
  100% {
    background-position: 0 50%;
  }
  50% {
    background-position: 100% 50%;
  }
}
/* 文字渐变色 */
@media all and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: 0.001dpcm) {
  .text-gradient {
    background-image: -webkit-linear-gradient(left, #fff, #36a8f1 25%, #fff 50%, #36a8f1 75%, #fff);
    color: transparent;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    -webkit-background-clip: text;
    background-size: 200% 100%;
    -webkit-background-size: 200% 100%;
    animation: masked-animation 2s infinite linear;
    -webkit-animation: masked-animation 2s infinite linear;
  }
}
@keyframes masked-animation {
  0% {
    background-position: 0 0;
  }
  100% {
    background-position: -100% 0;
  }
}
@-webkit-keyframes masked-animation {
  0% {
    background-position: 0 0;
  }
  100% {
    background-position: -100% 0;
  }
}
/* 浮动影子 */
.hvr-float-shadow {
  display: inline-block;
  vertical-align: middle;
  -webkit-transform: perspective(1px) translateZ(0);
  transform: perspective(1px) translateZ(0);
  box-shadow: 0 0 1px rgba(0, 0, 0, 0);
  position: relative;
  -webkit-transition-duration: 0.3s;
  transition-duration: 0.3s;
  -webkit-transition-property: transform;
  transition-property: transform;
}
.hvr-float-shadow::before {
  pointer-events: none;
  position: absolute;
  z-index: -1;
  content: '';
  top: 100%;
  left: 5%;
  height: 20px;
  width: 90%;
  opacity: 0;
  background: -webkit-radial-gradient(center, ellipse, rgba(0, 0, 0, 0.35) 0%, rgba(0, 0, 0, 0) 80%);
  background: radial-gradient(ellipse at center, rgba(0, 0, 0, 0.35) 0%, rgba(0, 0, 0, 0) 80%);
  /* W3C */
  -webkit-transition-duration: 0.3s;
  transition-duration: 0.3s;
  -webkit-transition-property: transform, opacity;
  transition-property: transform, opacity;
}
.hvr-float-shadow:hover,
.hvr-float-shadow:focus,
.hvr-float-shadow:active {
  -webkit-transform: translateY(-5px);
  transform: translateY(-5px);
  /* move the element up by 5px */
}
.hvr-float-shadow:hover::before,
.hvr-float-shadow:focus::before,
.hvr-float-shadow:active::before {
  opacity: 1;
  -webkit-transform: translateY(5px);
  transform: translateY(5px);
  /* move the element down by 5px (it will stay in place because it's attached to the element that also moves up 5px) */
}
/* 成长影子 */
.hvr-grow-shadow {
  display: inline-block;
  vertical-align: middle;
  -webkit-transform: perspective(1px) translateZ(0);
  transform: perspective(1px) translateZ(0);
  box-shadow: 0 0 1px rgba(0, 0, 0, 0);
  -webkit-transition-duration: 0.3s;
  transition-duration: 0.3s;
  -webkit-transition-property: box-shadow, transform;
  transition-property: box-shadow, transform;
}
.hvr-grow-shadow:hover,
.hvr-grow-shadow:focus,
.hvr-grow-shadow:active {
  box-shadow: 0 10px 10px -10px rgba(0, 0, 0, 0.5);
  -webkit-transform: scale(1.1);
  transform: scale(1.1);
}
/* hover摇晃 */
.hvr-swing:hover {
  animation: avatarExample 3s linear infinite;
}
@keyframes avatarExample {
  0% {
    transform: rotateZ(40deg);
  }
  10% {
    transform: rotateZ(-40deg);
  }
  20% {
    transform: rotateZ(35deg);
  }
  30% {
    transform: rotateZ(-35deg);
  }
  40% {
    transform: rotateZ(30deg);
  }
  50% {
    transform: rotateZ(-30deg);
  }
  60% {
    transform: rotateZ(25deg);
  }
  70% {
    transform: rotateZ(-25deg);
  }
  80% {
    transform: rotateZ(0deg);
  }
  90% {
    transform: rotateZ(0deg);
  }
  100% {
    transform: rotateZ(0deg);
  }
}
/* hover轻提示 */
.hvr-prompt {
  position: relative;
}
.hvr-prompt:hover::after {
  content: 'Whether to login now?';
  position: absolute;
  width: 100px;
  left: -60px;
  bottom: -85px;
  color: #333333;
  font-size: 13px;
  padding: 15px 10px;
  border-radius: 4px;
  border: 0;
  font-weight: bold;
  background: #fff;
  box-shadow: 0 1px 40px -8px rgba(0, 0, 0, 0.5);
  animation: trAExample 0.3s linear;
}
.hvr-prompt:hover::before {
  content: '';
  width: 0px;
  height: 0px;
  border-right: 15px solid transparent;
  border-bottom: 15px solid #fff;
  border-left: 15px solid transparent;
  position: absolute;
  left: 0;
  bottom: -18px;
  animation: trBExample 0.3s linear;
  z-index: 100;
}
@keyframes trAExample {
  0% {
    bottom: -63px;
    opacity: 0.3;
  }
  50% {
    bottom: -77px;
    opacity: 0.6;
  }
  100% {
    bottom: -85px;
    opacity: 1;
  }
}
@keyframes trBExample {
  0% {
    bottom: 0;
    opacity: 0.3;
  }
  50% {
    bottom: -10px;
    opacity: 0.6;
  }
  100% {
    bottom: -18px;
    opacity: 1;
  }
}
/* 反弹 */
.hvr-bounce-in {
  display: inline-block;
  vertical-align: middle;
  -webkit-transform: perspective(1px) translateZ(0);
  transform: perspective(1px) translateZ(0);
  box-shadow: 0 0 1px rgba(0, 0, 0, 0);
  -webkit-transition-duration: 0.5s;
  transition-duration: 0.5s;
}
.hvr-bounce-in:hover,
.hvr-bounce-in:focus,
.hvr-bounce-in:active {
  -webkit-transform: scale(1.2);
  transform: scale(1.2);
  -webkit-transition-timing-function: cubic-bezier(0.47, 2.02, 0.31, -0.36);
  transition-timing-function: cubic-bezier(0.47, 2.02, 0.31, -0.36);
}
/* 动态下划线 */
.dynamic-down-line {
  position: relative;
}
.dynamic-down-line::before {
  content: '';
  position: absolute;
  width: 0;
  right: 0;
  bottom: 0;
  height: 2px;
  background: gold;
  animation: downline 3s infinite linear;
}
.dynamic-down-line::after {
  content: '';
  position: absolute;
  width: 0;
  left: 0;
  bottom: 0;
  height: 2px;
  background: gold;
  animation: downline 3s infinite linear;
}
@keyframes downline {
  0% {
    width: 0;
  }
  100% {
    width: 50%;
  }
}
